import numpy as np

# 参数设置
S_0 = 100 # 初始股价
mu = 0.12 # 年化回报率
sigma = 0.3 # 年化波动率
T = 1 # 到期时间（年）
N = 252 # 一年的交易日数（时间步数）

# AI输出：
ES_T = S_0*np.exp(mu*T)
VarS_T = S_0**2*np.exp(2*mu*T)*(np.exp(sigma**2*T)-1)
StdS_T = np.sqrt(VarS_T)

print(f'根据AI输出：')
print(f'一年后股票价格S_T的期望为E(S_T)={ES_T:.4f}')
print(f'一年后股票价格S_T的方差为Var(S_T)={VarS_T:.4f}')
print(f'一年后股票价格S_T的标准差为Std(S_T)={StdS_T:.4f}')

# # 教材95页：
# 注：书上95页的对数正态分布的期望和方差公式，
# 是 exp(mu*t+sigma*W_t) 的公式。

# ES_T = S_0*np.exp(mu*T+sigma**2*T/2)
# VarS_T = S_0**2*np.exp(2*mu*T+sigma**2*T)*(np.exp(sigma**2*T)-1)
# StdS_T = np.sqrt(VarS_T)

# print(f'根据书上公式：')
# print(f'一年后股票价格S_T的期望为E(S_T)={ES_T:.4f}')
# print(f'一年后股票价格S_T的方差为Var(S_T)={VarS_T:.4f}')
# print(f'一年后股票价格S_T的标准差为Std(S_T)={StdS_T:.4f}')

# S_T = S_0 \exp
# \left[ 
#   \left(\mu - \frac{1}{2}\sigma^2\right)T 
#   + \sigma W_T 
# \right]

# 生成1000条路径，考察终点价格
W_T = np.random.normal(0, np.sqrt(T), 100000)
S_T = S_0*np.exp((mu - 0.5*sigma**2)*T + sigma*W_T)

print(f'根据模拟数据：')
print(f'一年后股票价格S_T的样本均值为{np.mean(S_T):.4f}')
print(f'一年后股票价格S_T的样本方差为{np.var(S_T):.4f}')
print(f'一年后股票价格S_T的样本标准差为{np.std(S_T):.4f}')

